//import java.util.HashSet;
//import java.util.Set;
//
//public class ThreadDemo15 {
//    public static void main(String[] args) throws InterruptedException {
//        Object obj = new Object();
//        System.out.println("wait 之前");
//        obj.wait();
//        System.out.println("wait之后");
//
//        Set<Character> set = new HashSet<>();
//    }
//}
//import java.util.HashSet;
//import java.util.Scanner;
//        import java.util.Set;
//class Main {
//    public static void main(String[] args) {
//        Scanner in = new Scanner(System.in);
//
//        while (in.hasNext()) {// 注意，如果输入是多个测试用例，请通过while循环处理多个测试用例
//            String str1 = in.next();
//            String str2 = in.next();
//            str1 = dict(str1,str2);
//            System.out.println(str1);
//        }
//    }
//
//    public static String dict(String str1,String str2) {
//        StringBuilder stringBuilder = new StringBuilder();
//        Set<Character> set = new HashSet<Character>();
//        int len2 = str2.length();
//        for(int i = 0;i < len2;i++) {
//            set.add(str2.charAt(i));
//        }
//        int len1 = str1.length();
//        for(int i = 0; i< len1 ;i++) {
//            if(!set.contains(str1.charAt(i))) {
//                stringBuilder.append(str1.charAt(i));
//            }
//        }
//
//        str1 = stringBuilder.toString();
//        return str1;
//
//
//    }
//}
//import java.util.Deque;
//import java.util.LinkedList;
//import java.util.Scanner;
//import java.util.Stack;
//
//class Main {
//    public static void main1(String[] args) {
//        Scanner sc = new Scanner(System.in);
//        int n = sc.nextInt();
//        int ans = 0, x;
//        int[] ret = new int[3*n];
//        int tmp = 0;
//        for(int i = 0; i < n; i++){
//            for(int j = 0; j < 3; j++){
//                x = sc.nextInt();
//                int tmp2 = tmp - 1 ;//记录最后一个元素下标
//                while(tmp2 >= 0 && x < ret[tmp2]) {
//
//                    ret[tmp2 + 1] = ret[tmp2];
//                    tmp2--;
//                }
//                ret[tmp2 + 1] = x;
//                tmp++;
//            }
//        }
//        tmp = n*n - 1;
//        int tmp2 = 0;
//        for(int i = 0;i < n*n;i++) {
//            System.out.print(ret[i] + " ");
//        }
//        int[][] arr = new int[n][3];
//        for (int i = 0; i < n;i++) {
//            arr[i][2] = ret[tmp];
//            tmp--;
//            arr[i][0] = ret[tmp2];
//            tmp2++;
//            arr[i][1] = ret[tmp];
//            tmp--;
//        }
//        int sum = 0;
//        for(int i = 0; i < n;i++) {
//            sum = sum + arr[i][1];
//        }
//
//        System.out.println(sum);
//
//    }
//
//
//    public static void main(String[] args) {
//        Deque<String> stack = new LinkedList<>();
//    }
//}


import java.util.Set;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Deque;
import java.util.LinkedList;
class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()) {// 注意，如果输入是多个测试用例，请通过while循环处理多个测试用例
            String str = in.nextLine();
            String str1 = reverse(str);
            System.out.println(str1);
        }
    }

    public static String reverse(String str) {
        Deque<String> stack = new LinkedList<>();
        stack = dict(str);
        StringBuilder stringBuilder = new StringBuilder();
        while(!stack.isEmpty()) {
            stringBuilder.append(stack.pop());
            stringBuilder.append(" ");
        }
        return stringBuilder.toString();

    }
    public static Deque<String> dict(String str) {
        Deque<String> stack = new LinkedList<>();
        StringBuilder stringBUilder = new StringBuilder();
        for(int i = 0;i < str.length();i++) {
            char ch = str.charAt(i);
            if(i == str.length() - 1) {
                stringBUilder.append(ch);
                stack.push(stringBUilder.toString());
                break;
            }else if(ch != ' ') {
                stringBUilder.append(ch);

            } else {
                stack.push(stringBUilder.toString());
                stringBUilder = new StringBuilder();
            }
        }
        return stack;
    }
}